昨天我們講解了Filebeat如何蒐集nginx log,今天我們要開始進入比較實際操作的部分。昨天及前天我們使用的log是提供的demo檔案,今天我們首先先讓大家用docker 建構一個nginx的container,等於是一個web的應用,並且蒐集這個web的log,再上傳到elastic cloud上
這次的Sample主要的架構是,透過docker 建構一個nginx container,並且透過volume的設定,將container的服務log往外拋到設定的volume資料夾。而這時候透過外部local端監聽的filebeat,將log拋到elastic cloud。
因此這架構,我們將網頁服務架構在container內,filebeat放在local端。
這次的教學因為主軸仍然是filebeat以及elastic cloud實際應用的流程,因此docker的操作就當作大家基本上有概念。如果不熟docker操作,可以參考docker的官網
另外因為我demo的筆電礙於作業系統關係,因此只能安裝docker toolbox,這邊簡單講解一下差異,若原生的docker,可以直接用linux核心模擬,但docker toolbox的作法是先透過Virtual Box建構一個VM,再VM中建立docker。因此要連結到docker container,必須透過VM IP (預設為192.168.99.100),另外volume的設定限於C:/Users/user中的資料夾,若安裝的是docker就沒有這個問題囉(但需要設定權限)
創立蒐集的資料夾,並且建構nginx container
一、首先我們先建立一個資料夾在D:/,名稱叫做docker-nginx-log
二、透過docker run 建構一個nginx的container,並且將container內部的port 80,mapping到外部的80,設定volume,並且設置在我們剛剛設定的資料夾
docker run -p 80:80 -itd -v /c/Users/user/docker-nginx-log:/var/log/nginx nginx
最後一個nginx若你沒有nginx的image,他會自己下載,並且run起來。
-itd意思是tty模式以及detach(不會將畫面固定在nginx啟動的Listen狀態)
三、修改filebeat nginx中的module設定
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.9/filebeat-module-nginx.html
- module: nginx
# Access logs
access:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["d:/docker-nginx-log/access.log*"]
# Error logs
error:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["d:/docker-nginx-log/error.log*"]
# Ingress-nginx controller logs. This is disabled by default. It could be used in Kubernetes environments to parse ingress-nginx logs
ingress_controller:
enabled: false
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:
四、啟動filebeat
filebeat.exe -e
啟動後filebeat就會監聽D:/docker-nginx-log,而我們剛剛設置好volume,因此只要有人拜訪這個服務,log生成以後,就會被filebeat listen到。
五、拜訪服務
剛剛我們將服務port80對照到外面80,因此我們只需要拜訪http://127.0.0.1,就能夠看到預設的nginx頁面
而這樣拜訪後,可以看到D:/docker-nginx-log裡面會出現,accesslog以及error log,接著filebeat就會自動上傳了!
透過這樣蒐集,可以按照昨天的demo,去Kibana檢視這個服務nginx相關的log!